Skip to content

[pull] main from MetaMask:main#417

Merged
pull[bot] merged 5 commits into
Reality2byte:mainfrom
MetaMask:main
Dec 17, 2025
Merged

[pull] main from MetaMask:main#417
pull[bot] merged 5 commits into
Reality2byte:mainfrom
MetaMask:main

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented Dec 17, 2025

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

PatrykLucka and others added 5 commits December 16, 2025 23:55
…onents (#23980)

<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

The confirmation message for successfully copying a public address to
the clipboard was previously displayed as a modal in the center of the
screen. This change updates the implementation to use the Toast
component instead, which slides up from the bottom of the screen for a
more modern and less intrusive UX.

**Changes made:**

- Updated AddressCopy component to use ToastContext instead of showAlert
redux action
- Converted AddressQRCode from class component to functional component
and replaced modal with Toast
- Updated AssetDetails to use Toast for address copy confirmation
- Updated useCopyClipboard hook to use Toast instead of modal
- Updated test to provide ToastContext.Provider wrapper

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: Changed address copy confirmation from modal to Toast
notification

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/MDP-203

## **Manual testing steps**

```gherkin
Feature: Copy public address to clipboard

  Scenario: user copies wallet address from main wallet view
    Given user is on the main wallet view
    And user can see their account address

    When user taps the copy address button
    Then a Toast notification slides up from the bottom of the screen
    And the Toast displays "Public address copied to clipboard"
    And the Toast auto-dismisses after a few seconds

  Scenario: user copies wallet address from QR code modal
    Given user has opened the receive/QR code modal
    And user can see their public address displayed

    When user taps on the address to copy it
    Then a Toast notification slides up from the bottom of the screen
    And the Toast displays "Public address copied to clipboard"

  Scenario: user copies token contract address from asset details
    Given user is viewing token details for a specific token
    And user can see the token contract address

    When user taps on the contract address to copy it
    Then a Toast notification slides up from the bottom of the screen
    And the Toast displays "Token address copied to clipboard"
```

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**
<img width="367" height="815" alt="Screenshot 2025-12-12 at 16 27 40"
src="https://github.com/user-attachments/assets/11e32346-9a4c-4547-81c9-3cd844490872"
/>

<!-- [screenshots/recordings] -->

### **After**
<img width="403" height="823" alt="Screenshot 2025-12-12 at 17 05 21"
src="https://github.com/user-attachments/assets/cced2c06-488f-4f4c-b28b-ec1828483cc4"
/>

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.


<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Replaces modal/showAlert clipboard confirmations with Toast across
components and refactors AddressQRCode into a functional, hook-based
component, updating tests accordingly.
> 
> - **UI/Clipboard Toast migration**:
> - Replace `showAlert` modals with `ToastContext` toasts in
`AddressCopy.tsx`, `TokenDetailsList.tsx`, `AssetDetails/index.tsx`, and
`useCopyClipboard.ts`.
> - Use themed colors and `IconName.CheckBold`; keep delayed
`protectWalletModalVisible` dispatch.
> - **Refactor**:
> - Convert `Views/AddressQRCode/index.js` from class to functional
component using hooks (`useSelector`, `useDispatch`, `useTheme`,
`ToastContext`).
> - Implement toast on copy, delayed protect wallet prompt on close, and
memoized styles; remove `connect`/`GlobalAlert`.
> - **Tests**:
>   - Add `AddressQRCode.test.tsx` and `useCopyClipboard.test.ts`.
> - Update `AddressCopy.test.tsx` and `TokenDetailsList.test.tsx` to
wrap with `ToastContext.Provider`; update snapshot.
> - **Misc**:
> - Use `DesignSystemIconName.Copy` in `TokenDetailsList.tsx`; minor
README formatting tweaks.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
aa75eb2. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: vinnyhoward <vincenguyenhoward@gmail.com>
## **Description**

Fix OHLC bar text overflow for tokens with long decimal values (e.g.,
PUMP-USD at ~$0.002877).

**Problem:** Price values with many decimals would wrap to multiple
lines, causing visual jank in the OHLC indicator bar.

**Solution:** Added text scaling properties to prevent overflow:
- `numberOfLines={1}` - Force single line
- `adjustsFontSizeToFit` - Auto-scale font to fit
- `minimumFontScale={0.7}` - Limit minimum size to 70%

## **Changelog**

CHANGELOG entry: Fixed OHLC bar text overflow for tokens with small
prices

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/TAT-2297

## **Manual testing steps**

```gherkin
Feature: OHLC bar display

  Scenario: View OHLC bar for token with long decimal price
    Given the user is viewing PUMP-USD chart (price ~$0.002877)
    When user long presses on the price section
    Then the OHLC indicator bar appears
    And all values (Open, Close, High, Low, Volume) fit on single lines
    And text scales down if needed to fit
```

## **Screenshots/Recordings**

### **Before**

<!-- Price values wrap to multiple lines -->

### **After**

<!-- All values fit on single line with auto-scaling -->

## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I've included tests if applicable
- [x] I've documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I've applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Ensure OHLCV values render on a single line with auto-scaling to avoid
overflow on small-price tokens.
> 
> - **UI (Perps)**:
> - `app/components/UI/Perps/components/PerpsOHLCVBar/PerpsOHLCVBar.tsx`
> - Apply `numberOfLines={1}`, `adjustsFontSizeToFit`, and
`minimumFontScale={0.7}` to value `Text` components for `open`, `close`,
`high`, `low`, and `volume` to prevent wrapping/overflow.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
a6a05fb. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**
Extract authentication logic in RevealPrivateCredential 

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry:null

## **Related issues**

Fixes:

## **Manual testing steps**

```gherkin
Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]
```

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [x] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [x] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Moves SRP/private key reveal and reauth logic from
`RevealPrivateCredential` into `Authentication` with a new hook,
biometric-aware reauth, and tests.
> 
> - **Core Authentication**:
> - Add `reauthenticate(password?)` with biometric/remember-me support
and `ReauthenticateErrorType.BIOMETRIC_NOT_ENABLED`.
> - Introduce `revealSRP(password, keyringId?)` and
`revealPrivateKey(password, address)` helpers.
> - New hook `core/Authentication/hooks/useAuthentication` exposing
these APIs.
> - Tests covering `reauthenticate`, `revealSRP`, and
`revealPrivateKey`.
> - **UI (`RevealPrivateCredential`)**:
> - Replace direct engine/mnemonic calls with `useAuthentication`
(`reauthenticate`, `revealSRP`, `revealPrivateKey`).
> - Authenticate first, then trace and reveal; auto-trigger reveal on
mount.
> - Handle `BIOMETRIC_NOT_ENABLED` without surfacing an error; update
button handlers.
>   - Remove legacy biometric unlock path and related imports.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
6608cf3. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
## **Description**

under-memoization was causing data changes in live prices to not trigger
re-renders in the leverage slider.

## **Changelog**

CHANGELOG entry: fix non-live current price in leverage slider

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/TAT-2062

## **Manual testing steps**

```gherkin
Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]
```

## **Screenshots/Recordings**


https://github.com/user-attachments/assets/9fcc4de5-94fc-4b30-bc82-a3a9f299112c

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> PerpsLeverageBottomSheet now derives current price from
usePerpsLivePrices (instead of prop) to re-render on live updates, with
tests adjusted to mock and validate price states.
> 
> - **PerpsLeverageBottomSheet (`PerpsLeverageBottomSheet.tsx`)**:
> - Replace `currentPrice` prop usage with live price from
`usePerpsLivePrices({ symbols: [asset], throttleMs: 1000 })` and parse
via `parseFloat`.
> - Compute `entryPrice` from `limitPrice` for `limit` orders or from
live `currentPrice` for `market` orders.
> - Maintain liquidation calculations and skeleton logic; no UI changes
beyond sourcing price.
> - **Tests (`PerpsLeverageBottomSheet.test.tsx`)**:
> - Mock `usePerpsLivePrices` and default to `'BTC-USD': { price: '3000'
}`.
> - Update scenarios to handle zero and missing price via mocked hook;
verify "Price information unavailable" and `0.0%` cases.
> - Keep liquidation formatting and behavior assertions; remove reliance
on `currentPrice` prop for rendering/logic.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
905a2f4. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
## **Description**

This PR adds margin adjustment UI improvements and fixes the max
removable margin calculation to match Hyperliquid's official
documentation.

**What changed:**

### UI Improvements
- Added two new i18n strings: `margin_available_to_add` and
`margin_available_to_remove`
- Added a new info row in the adjust margin view that displays the
maximum amount of margin that can be added or removed
- Updated the first row to always show "Current margin" (previously
showed "Perps balance" for add mode)
- Re-enabled "Reduce Margin" action in the action sheet (was previously
disabled pending calculation fix)

### Max Removable Margin Calculation Fix
- Fixed `calculateMaxRemovableMargin` to use position's actual leverage
instead of asset's max leverage
- Formula now matches Hyperliquid's official documentation exactly:
`transfer_margin_required = max(notional/leverage, notional*0.1)`
- Removed excessive 3x safety buffer that was causing incorrect
calculations
- Added `unrealizedPnl` parameter for more accurate effective margin
calculation

**Root cause:** The calculation was using `maxLeverage` (asset's max,
e.g., 50x) instead of `position.leverage.value` (actual position
leverage, e.g., 10x). This caused significant discrepancies - a position
at 10x leverage requires 10% initial margin, not 2% that 50x would
imply.

The info section now displays four rows:
1. Current margin (always shows the margin in position)
2. Margin available to add/remove (shows max amount based on mode)
3. Liquidation price (with transition arrow when adjusting)
4. Liquidation distance (with transition arrow when adjusting)

## **Changelog**

CHANGELOG entry: null

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/TAT-2167

## **Manual testing steps**

```gherkin
Feature: Margin adjustment with correct calculations

  Scenario: User views margin available to add
    Given user has an open perpetual position
    And user navigates to the position details

    When user taps "Adjust Margin"
    And user selects "Add Margin"
    Then user sees "Current margin" row with current margin value
    And user sees "Margin available to add" row with available balance

  Scenario: User views margin available to remove
    Given user has an open perpetual position
    And user navigates to the position details

    When user taps "Adjust Margin"
    And user selects "Reduce Margin"
    Then user sees "Current margin" row with current margin value
    And user sees "Margin available to remove" row with max removable margin

  Scenario: Max removable margin matches Hyperliquid
    Given user has an isolated position with known values
    And user compares max removable in MetaMask vs Hyperliquid UI

    When the values match (or are very close)
    And user attempts to remove the displayed max amount
    Then the transaction succeeds without rejection
```

## **Screenshots/Recordings**

### **Before**

The info section only showed:
- Perps balance (add mode) / Margin in position (remove mode)
- Liquidation price
- Liquidation distance
<img width="420" height="876" alt="image"
src="https://github.com/user-attachments/assets/96364845-73bd-4dff-8712-db21afbffde5"
/>

### **After**

The info section now shows:
- Current margin (both modes)
- Margin available to add (add mode) / Margin available to remove
(remove mode)
- Liquidation price
- Liquidation distance
<img width="414" height="830" alt="image"
src="https://github.com/user-attachments/assets/4ce0decd-7a88-45ee-ab65-3a1d1f4cb67f"
/>
<img width="425" height="822" alt="image"
src="https://github.com/user-attachments/assets/e5596180-37d5-4340-a984-222c9af958c9"
/>

## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I've included tests if applicable
- [x] I've documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I've applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.


<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Refactors adjust margin to a new live-data hook and fixes max
removable margin per Hyperliquid, updates UI (current/max rows),
re-enables reduce action, and adds tests/docs.
> 
> - **Logic/Calculations**:
> - **New hook** `usePerpsAdjustMarginData`: centralizes live
position/account/price data and computes `maxAmount`, liquidation
price/distance, and mode; exported via `hooks/index`.
> - **Fix** `calculateMaxRemovableMargin`: use `positionLeverage` (not
asset max), accept optional `notionalValue`, rely on mark price, remove
inflated safety buffer; update related tests.
> - **UI**:
> - **PerpsAdjustMarginView**: refactor to use new hook; remove
manual/live hooks and inline calcs; pass loading state; floor values to
2 decimals; clamp inputs; slider `maximumValue` uses floored
`maxAmount`.
> - **Info rows**: always show `margin_in_position`; add
`margin_available_to_add/remove`; keep liquidation price/distance with
transition.
>   - **Action Sheet**: re-enable `reduce_margin` option.
> - **Tests/Docs**:
> - Add tests for new hook and update view/utils tests to new behavior.
> - Add doc `docs/perps/hyperliquid/margining.md` describing margin
rules.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
bf29e8d. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Signed-off-by: dan437 <80175477+dan437@users.noreply.github.com>
Co-authored-by: Nick Gambino <35090461+gambinish@users.noreply.github.com>
Co-authored-by: javiergarciavera <76975121+javiergarciavera@users.noreply.github.com>
Co-authored-by: metamaskbot <metamaskbot@users.noreply.github.com>
Co-authored-by: sethkfman <10342624+sethkfman@users.noreply.github.com>
Co-authored-by: Jorge Carrasco <jorge.carrasco@consensys.net>
Co-authored-by: Vinicius Stevam <45455812+vinistevam@users.noreply.github.com>
Co-authored-by: Alejandro Garcia Anglada <aganglada@gmail.com>
Co-authored-by: Daniel <80175477+dan437@users.noreply.github.com>
Co-authored-by: Juanmi <95381763+juanmigdr@users.noreply.github.com>
Co-authored-by: Matthew Grainger <46547583+Matt561@users.noreply.github.com>
Co-authored-by: Salim TOUBAL <salim.toubal@outlook.com>
Co-authored-by: CW <chris.wilcox@consensys.net>
Co-authored-by: George Marshall <george.marshall@consensys.net>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Kevin Bluer <kevin@bluer.com>
Co-authored-by: Michele Esposito <34438276+mikesposito@users.noreply.github.com>
Co-authored-by: Pedro Pablo Aste Kompen <wachunei@gmail.com>
Co-authored-by: Kylan Hurt <6249205+smilingkylan@users.noreply.github.com>
Co-authored-by: Brian August Nguyen <brianacnguyen@gmail.com>
Co-authored-by: Vince Howard <vincenguyenhoward@gmail.com>
Co-authored-by: Curtis David <Curtis.David7@gmail.com>
Co-authored-by: Bryan Fullam <bryan.fullam@consensys.net>
Co-authored-by: Monte Lai <monte.lai@consensys.net>
Co-authored-by: Charly Chevalier <charlyy.chevalier@gmail.com>
Co-authored-by: Patryk Łucka <5708018+PatrykLucka@users.noreply.github.com>
Co-authored-by: Goktug Poyraz <omergoktugpoyraz@gmail.com>
Co-authored-by: Michal Szorad <michal.szorad@consensys.net>
Co-authored-by: Nicholas Smith <nick.smith@consensys.net>
Co-authored-by: Matthew Walsh <matthew.walsh@consensys.net>
Co-authored-by: Bruno Nascimento <brunonascimentodev@gmail.com>
Co-authored-by: cmd-ob <ola.bale@consensys.net>
Co-authored-by: AxelGes <34173844+AxelGes@users.noreply.github.com>
Co-authored-by: George Weiler <georgejweiler@gmail.com>
Co-authored-by: Owen Craston <owen.craston@consensys.net>
Co-authored-by: Prithpal Sooriya <prithpal.sooriya@consensys.net>
Co-authored-by: Caainã Jeronimo <caainaje@gmail.com>
Co-authored-by: Nicholas Gambino <nicholas.gambino@consensys.net>
Co-authored-by: VGR <VanGulckRik@gmail.com>
Co-authored-by: Daniel Suchý <suchydan@gmail.com>
Co-authored-by: Nicholas Ellul <15018469+NicholasEllul@users.noreply.github.com>
Co-authored-by: Harika <153644847+hjetpoluru@users.noreply.github.com>
Co-authored-by: Maarten Zuidhoorn <maarten@zuidhoorn.com>
Co-authored-by: jvbriones <1674192+jvbriones@users.noreply.github.com>
Co-authored-by: Christopher Ferreira <104831203+christopherferreira9@users.noreply.github.com>
Co-authored-by: Mark Stacey <markjstacey@gmail.com>
Co-authored-by: António Regadas <antonio.regadas@consensys.net>
Co-authored-by: Baptiste Marchand <75846779+baptiste-marchand@users.noreply.github.com>
Co-authored-by: Cal Leung <cal.leung@consensys.net>
Co-authored-by: sophieqgu <37032128+sophieqgu@users.noreply.github.com>
Co-authored-by: George Gkasdrogkas <georgegkas@gmail.com>
Co-authored-by: ffmcgee <51971598+ffmcgee725@users.noreply.github.com>
Co-authored-by: Luis Taniça <matallui@gmail.com>
Co-authored-by: Guillaume Roux <guillaumeroux123@gmail.com>
Co-authored-by: Priya <priya.narayanaswamy@consensys.net>
Co-authored-by: sahar-fehri <sahar.fehri@consensys.net>
Co-authored-by: Ulisses Ferreira <ulisses@hey.com>
Co-authored-by: imblue <106779544+imblue-dabadee@users.noreply.github.com>
Co-authored-by: Amélie <amelie.chan@gmail.com>
Co-authored-by: asalsys <sallem.ahmed@consensys.net>
Co-authored-by: SteP-n-s <stylianos.panagakos@consensys.net>
Co-authored-by: tommasini <46944231+tommasini@users.noreply.github.com>
Co-authored-by: Bernardo Garces Chapero <bernardo.chapero@consensys.net>
Co-authored-by: Gaurav Goel <grvgoel19@gmail.com>
Co-authored-by: Frederik Bolding <frederik.bolding@gmail.com>
Co-authored-by: jiexi <jiexiluan@gmail.com>
Co-authored-by: khanti42 <florin.dzeladini@consensys.net>
Co-authored-by: Ramon AC <36987446+racitores@users.noreply.github.com>
Co-authored-by: ieow <4881057+ieow@users.noreply.github.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Andre Pimenta <andrepimenta7@gmail.com>
Co-authored-by: infiniteflower <139582705+infiniteflower@users.noreply.github.com>
@pull pull Bot locked and limited conversation to collaborators Dec 17, 2025
@pull pull Bot added the ⤵️ pull label Dec 17, 2025
@pull pull Bot merged commit 32eabc9 into Reality2byte:main Dec 17, 2025
2 of 36 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants